/**
 * 节点类型
 * - `ACTION`：动作节点
 * - `CONDITION`：条件节点
 * - `PROCESS`：流程节点
 * - `HELPER`：辅助节点
 */
export enum PnodeType {
    ACTION,
    CONDITION,
    PROCESS,
    HELPER,
}
/** 节点视图 */
export enum PnodeView {
    WIDTH = 80,
    HEIHGT = 80,
}

/** 通用节点 */
export interface Pnode {
    [key: string]: any;
    /** 节点唯一 ID，必须是唯一的 string */
    id?: string;
    /** 节点类型 */
    type?: PnodeType;
    /** 节点配置 */
    config?: any;
}

/** 动作节点 */
export interface ActionPnode extends Pnode {
    confg?: {
        /**
         * 动作类型
         * - `0` 短信
         * - `1` 邮件
         */
        mode?: number;
        /** 短信名称 */
        name?: string;
        /** 短信平台(ID) */
        platform?: string;
    };
}

/** 流程节点 */
export interface ProcessPnode extends Pnode {
    confg?: {
        /**
         * 流程类型
         * - `0` 开始
         * - `1` 等待
         * - `2` 结束
         */
        mode?: number;
    };
}

/** 条件节点 */
export interface ConditionPnode extends Pnode {
    config?: {
        /**
         * 条件类型
         * - `0` 复制多分支节点
         */
        mode?: number;
        /** 是否根节点 */
        isRoot?: boolean;
        /** 分支数量 */
        branchLength?: number;
        /** 时间段 */
        timeArr?: any[];
        /** 时间点 */
        time?: string;
    };
}
